<?php 
/**
 * This file is part of DomAr.
 * 
 * DomAr is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * DomAr is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with DomAr.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * @link http://inditel.ee/
 * @copyright 2007-2009 Inditel Meedia OÜ
 * @author Oliver Leisalu <oliver@inditel.ee>
 */

/**

Add this annotation parsing line to annotations.conf.php
//@orm slug(fields)
'/@(?<tag>orm)( )*(?<type>(slug))\((?<fields_f>(\S+))\)( )*(\r\n|\n){1}/',

* @package DomAr
* @subpackage Parser
*/
class DomArClassParserRecordProperty_Slug extends DomArClassParserRecordProperty {
	
	private $fields;
	
	protected function setOrm( array &$orm ) {
		$this->fields  = $orm['fields'];
	}
	
	protected function updateHandlerClassName( DomArClassParser $class ) {
		$class = $this->getClass();
		foreach( $this->fields as $field ) {
			$listener = new DomArClassParserListener('afterset','updateSlug',array() );
			$listener->setPropertyName( $field );
			$listener->setTarget( $this->name );
			$listener->setCallPropertyHandler(true);
			$class->addListener($listener);
		}
		$this->handlerClassName = 'DomArProperty_DomArSlug';
	}
	
	protected function updateCreateHandlerCode( DomArClassParser $class ) {
		$fields = 'array(\''.implode('\',\'',$this->fields).'\')';
		$this->createHandlerCode = "new DomArProperty_DomArSlug('".$this->name."',".$fields.")";
	}

}

?>